package com.example.strategyproject.strategy;

/**
 * 这里主要是通过context来做控制转发的作用，具体的实现是通过策略的实现类来处理的
 * 由此可以看出，这里也可以通过map来作为控制器控制使用不同的策略
 * 比如在订单系统中，订单有不同的促销策略，
 * <p>
 * <p>
 * 如果要使用map，那么就可以提前来构造这个map， 例如通过初始化这个控制类（context在这个例子中作为控制类来控制，但是也可以不是context，或者是一个工厂类，或者
 * 是一个service，或者是一个其他名称，
 * <p>
 * 例如是这个StrategyManager类，这里通过构造方法来初始化map，然后通过map来获取不同的策略）
 *
 * @author ycd0075
 * @date 2024-01-25 20:43
 */
public class Test {

    public static void main(String[] args) {
        Context context = new Context(new DiscountStrategy());
        context.doPromotion();

        Context context2 = new Context(new ReduceStrategy());
        context2.doPromotion();

    }
}
